package mx.ipn.presentacion.empleado;

import com.trolltech.qt.gui.QBrush;
import com.trolltech.qt.gui.QColor;
import com.trolltech.qt.gui.QMessageBox;
import com.trolltech.qt.gui.QTableWidget;
import com.trolltech.qt.gui.QTableWidgetItem;
import com.trolltech.qt.gui.QWidget;
import com.trolltech.qt.gui.QIntValidator;
import com.trolltech.qt.gui.QLineEdit;

import com.trolltech.qt.core.*;

import mx.ipn.presentacion.ConexionConNegocios;
import mx.ipn.presentacion.Utilerias;
import mx.ipn.presentacion.empleado.ui.*;

import mx.ipn.to.TransferObject;
import mx.ipn.to.TurnoTO;
import mx.ipn.to.FechaHoraTO;

public class ComportamientoTurno extends QWidget {
	Ui_Turno turno;
	String titulo;
	TurnoTO[] arrTurnoTO = null;
	TurnoTO turno2TO;
	TurnoTO turno3TO;
	int bandera = 0;

	public void agregarTurno(Ui_EmpleadoPrincipal ui) {
			arrTurnoTO = (TurnoTO[]) ConexionConNegocios.invocaServicio(
					"buscarTurnos", TurnoTO[].class);
			turno = preparaVentana(ui);
			turno.pushButtonvalor3Turno.setText("A&gregar");
			turno.pushButtonvalor3Turno.clicked.connect(this, "botonAgregar()"); 
	}

	public void modificarTurno(Ui_EmpleadoPrincipal ui) {
		
			arrTurnoTO = (TurnoTO[]) ConexionConNegocios.invocaServicio(
					"buscarTurnos", TurnoTO[].class);
			turno = preparaVentana(ui);
			turno.pushButtonvalor3Turno.setText("&Modificar");
			turno.pushButtonvalor3Turno.clicked.connect(this,
					"botonModificar()");
	}

	public void consultarTurno(Ui_EmpleadoPrincipal ui) {
		
			arrTurnoTO = (TurnoTO[]) ConexionConNegocios.invocaServicio(
					"buscarTurnos", TurnoTO[].class);
			turno = preparaVentana(ui);
			turno.pushButtonvalor3Turno.setVisible(false);
			turno.groupBoxAtributosTurno.setEnabled(false);
	}

	public void bajaTurno(Ui_EmpleadoPrincipal ui) {
		
			arrTurnoTO = (TurnoTO[]) ConexionConNegocios.invocaServicio(
					"buscarTurnos", TurnoTO[].class);
			turno = preparaVentana(ui);
			turno.pushButtonvalor3Turno.setText("&Dar de Baja");
			turno.pushButtonvalor3Turno.clicked.connect(this, "botonBaja()");
			turno.groupBoxAtributosTurno.setEnabled(false);
	}

	public Ui_Turno preparaVentana(Ui_EmpleadoPrincipal ui) {
		if (turno == null) {
			turno = new Ui_Turno();
			turno.setupUi(ui.centralwidget);
			turno.dockWidgetTurno.setHidden(false);
			ui.gridLayout.addWidget(turno.dockWidgetTurno);
			turno.dockWidgetTurno.setWindowTitle(titulo);
			limpiarTurno(turno);
			eventosGenerales(turno);

			turno.labelValor1Turno.setVisible(false);
			turno.lineEditValor1Turno.setVisible(false);

			turno.labelValor2Turno.setVisible(false);
			turno.lineEditValor2Turno.setVisible(false);
			bloqueaComponentes(turno);

		} else
			turno.dockWidgetTurno.setHidden(false);

		turno.tableWidgetDiaTurno.disconnect();
		turno.tableWidgetNocheTurno.disconnect();
		llenarTabla(turno.tableWidgetDiaTurno, turno.tableWidgetNocheTurno,
				arrTurnoTO);
		turno.tableWidgetDiaTurno.cellChanged.connect(this,
				"slotNoEditarTablaDia(int,int)");
		turno.tableWidgetNocheTurno.cellChanged.connect(this,
				"slotNoEditarTablaNoche(int,int)");
		turno.tableWidgetDiaTurno.clicked.connect(this, "seleccionCeldaDia()");
		turno.tableWidgetNocheTurno.clicked.connect(this,
				"seleccionCeldaNoche()");
		

		return turno;
	}

	/**
	 * ***Eventos
	 * 
	 * 
	 * 
	 */

	public void seleccionCeldaDia() {
		seleccionCelda(turno.tableWidgetDiaTurno);
		turno.tableWidgetNocheTurno.setCurrentCell(turno.tableWidgetDiaTurno
				.currentRow(), turno.tableWidgetDiaTurno.currentColumn());
	}

	public void seleccionCeldaNoche() {
		seleccionCelda(turno.tableWidgetNocheTurno);
		turno.tableWidgetDiaTurno.setCurrentCell(turno.tableWidgetNocheTurno
				.currentRow(), turno.tableWidgetNocheTurno.currentColumn());
	}

	public void seleccionCelda(QTableWidget tabla) {
		if (arrTurnoTO != null) {
			turno.comboBoxNombreTurno.setEditText(arrTurnoTO[tabla
					.currentColumn()].getNombre());
			QTime tiempo = new QTime();
			String hora = FechaHoraTO.getHora(
					arrTurnoTO[tabla.currentColumn()].getHoraInicio())
					.toString();
			int hor = Integer.parseInt(hora.substring(0, 2));
			int min = Integer.parseInt(hora.substring(3, 5));
			int seg = Integer.parseInt(hora.substring(6, hora.length()));
			tiempo.setHMS(hor, min, seg);
			turno.timeEditHoraInicial.setTime(tiempo);
			hora = FechaHoraTO.getHora(
					arrTurnoTO[tabla.currentColumn()].getDuracion()).toString();
			hor = Integer.parseInt(hora.substring(0, 2));
			min = Integer.parseInt(hora.substring(3, 5));
			seg = Integer.parseInt(hora.substring(6, hora.length()));
			tiempo.setHMS(hor, min, seg);
			turno.timeEditDuracion.setTime(tiempo);
			turno.spinBox.setValue(arrTurnoTO[tabla.currentColumn()]
					.getDiasSemana());
			hora = FechaHoraTO.getHora(
					arrTurnoTO[tabla.currentColumn()].getTiempoDescanso())
					.toString();
			hor = Integer.parseInt(hora.substring(0, 2));
			min = Integer.parseInt(hora.substring(3, 5));
			seg = Integer.parseInt(hora.substring(6, hora.length()));
			tiempo.setHMS(hor, min, seg);
			turno.timeEditTiempoDescanso.setTime(tiempo);
			turno2TO = new TurnoTO();
			turno2TO = arrTurnoTO[tabla.currentColumn()];
		}
	}

	public void slotNoEditarTablaDia(int x, int y) {
		noEditarTabla(x, y, turno.tableWidgetDiaTurno);
	}

	public void slotNoEditarTablaNoche(int x, int y) {
		noEditarTabla(x, y, turno.tableWidgetNocheTurno);
	}

	public void noEditarTabla(int x, int y, QTableWidget tableWidgetTurno) {
		QTableWidgetItem __item = new QTableWidgetItem();
		__item.setBackground(tableWidgetTurno.item(x, y).background());
		__item.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", ""));
		tableWidgetTurno.setItem(x, y, __item);
	}

	public void eventosGenerales(Ui_Turno turno) {

		turno.pushButtonLimpiarTurno.clicked.connect(this, "botonLimpiar()");
		turno.pushButtonCancelarTurno.clicked.connect(this, "botonCancelar()");
		turno.comboBoxNombreTurno.editTextChanged.connect(this,
				"cambioComboNombre(String)");
		turno.comboBoxBusquedaTurno.currentIndexChanged.connect(this,
				"seleccionBusqueda(int)");
		turno.timeEditDuracion.timeChanged.connect(this,
				"cambioDuracion(QTime)");
		turno.tableWidgetDiaTurno.horizontalScrollBar().valueChanged.connect(
				this, "cambioScrool(int)");
		turno.tableWidgetNocheTurno.horizontalScrollBar().valueChanged.connect(
				this, "cambioScrool(int)");

	}

	/**
	 * *Metodos
	 * 
	 * 
	 */
	public void cambioScrool(int valor) {
		turno.tableWidgetDiaTurno.horizontalScrollBar().setValue(valor);
		turno.tableWidgetNocheTurno.horizontalScrollBar().setValue(valor);
	}

	public void botonAgregar() {
		try {
			TurnoTO turnoTO = new TurnoTO();
			turnoTO.setNombre(turno.comboBoxNombreTurno.currentText());
			turnoTO.setDiasSemana(Short.parseShort(turno.spinBox.text()));
			turnoTO.setHoraInicio(FechaHoraTO
					.getHoraUtil(turno.timeEditHoraInicial.time().toString()));
			turnoTO.setDuracion(FechaHoraTO.getHoraUtil(turno.timeEditDuracion
					.time().toString()));
			turnoTO
					.setTiempoDescanso(FechaHoraTO
							.getHoraUtil(turno.timeEditTiempoDescanso.time()
									.toString()));
			turnoTO.setActivo(true);

			turnoTO = (TurnoTO) ConexionConNegocios.invocaServicio(
					"agregarTurno", turnoTO, TurnoTO.class);

			if (turnoTO.getTipoError() > 0) {
				Utilerias.mostrarMensajeError(this, turnoTO);
			} else {
				turnoTO.setTipoError(TransferObject.INFO);
				Utilerias.mostrarMensajeError(this, turnoTO);
				limpiarTurno(turno);
				arrTurnoTO = (TurnoTO[]) ConexionConNegocios.invocaServicio(
						"buscarTurnos", TurnoTO[].class);
				preparaVentana(null);

			}
		} catch (Exception e) {

		}

	}

	public void botonModificar() {
		try {
			TurnoTO[] arrModificarTO = new TurnoTO[2];
			TurnoTO turnoTO = new TurnoTO();
			turnoTO.setNombre(turno.comboBoxNombreTurno.currentText());
			turnoTO.setDiasSemana(Short.parseShort(turno.spinBox.text()));
			turnoTO.setHoraInicio(FechaHoraTO
					.getHoraUtil(turno.timeEditHoraInicial.time().toString()));
			turnoTO.setDuracion(FechaHoraTO.getHoraUtil(turno.timeEditDuracion
					.time().toString()));
			turnoTO
					.setTiempoDescanso(FechaHoraTO
							.getHoraUtil(turno.timeEditTiempoDescanso.time()
									.toString()));
			turnoTO.setActivo(true);
			turnoTO.setIdTurno(turno2TO.getIdTurno());

			arrModificarTO[0] = turno2TO;
			arrModificarTO[1] = turnoTO;

			turnoTO = (TurnoTO) ConexionConNegocios.invocaServicio(
					"modificarTurno", arrModificarTO, TurnoTO.class);

			if (turnoTO.getTipoError() > 0) {
				Utilerias.mostrarMensajeError(this, turnoTO);
			} else {
				turnoTO.setTipoError(TransferObject.INFO);
				Utilerias.mostrarMensajeError(this, turnoTO);
				limpiarTurno(turno);
				arrTurnoTO = (TurnoTO[]) ConexionConNegocios.invocaServicio(
						"buscarTurnos", TurnoTO[].class);
				preparaVentana(null);

			}
		} catch (Exception e) {

		}

	}

	public void botonBaja() {
		try {
			TurnoTO turnoTO = new TurnoTO();
			int res = -1;

			res = QMessageBox
					.warning(
							turno.dockWidgetTurno,
							"Confirmación",
							"Se dara de baja el turno seleccionado. \n \n ¿Desea continuar con la operación? \n \n",
							QMessageBox.StandardButton.Yes,
							QMessageBox.StandardButton.No);
			if (res == 16384) {
				turnoTO = (TurnoTO) ConexionConNegocios.invocaServicio(
						"bajaTurno", turno2TO.getIdTurno(), TurnoTO.class);
				if (turnoTO.getTipoError() > 0) {
					Utilerias.mostrarMensajeError(this, turnoTO);
				} else {
					turnoTO.setTipoError(TransferObject.INFO);
					Utilerias.mostrarMensajeError(this, turnoTO);
					limpiarTurno(turno);
					arrTurnoTO = (TurnoTO[]) ConexionConNegocios
							.invocaServicio("buscarTurnos", TurnoTO[].class);
					preparaVentana(null);

				}
			}

		} catch (Exception e) {

		}

	}

	public void botonCancelar() {
		turno.dockWidgetTurno.setHidden(true);
	}

	public void agregarTabla(QTableWidget tableWidgetDiaTurno,
			QTableWidget tableWidgetNocheTurno) {

		tableWidgetDiaTurno.clear();
		tableWidgetDiaTurno.setColumnCount(0);
		tableWidgetDiaTurno.setRowCount(12);

		QTableWidgetItem __rowItem = new QTableWidgetItem();
		__rowItem.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "06:00"));
		tableWidgetDiaTurno.setVerticalHeaderItem(0, __rowItem);

		QTableWidgetItem __rowItem1 = new QTableWidgetItem();
		__rowItem1.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "07:00"));
		tableWidgetDiaTurno.setVerticalHeaderItem(1, __rowItem1);

		QTableWidgetItem __rowItem2 = new QTableWidgetItem();
		__rowItem2.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "08:00"));
		tableWidgetDiaTurno.setVerticalHeaderItem(2, __rowItem2);

		QTableWidgetItem __rowItem3 = new QTableWidgetItem();
		__rowItem3.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "09:00"));
		tableWidgetDiaTurno.setVerticalHeaderItem(3, __rowItem3);

		QTableWidgetItem __rowItem4 = new QTableWidgetItem();
		__rowItem4.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "10:00"));
		tableWidgetDiaTurno.setVerticalHeaderItem(4, __rowItem4);

		QTableWidgetItem __rowItem5 = new QTableWidgetItem();
		__rowItem5.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "11:00"));
		tableWidgetDiaTurno.setVerticalHeaderItem(5, __rowItem5);

		QTableWidgetItem __rowItem6 = new QTableWidgetItem();
		__rowItem6.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "12:00"));
		tableWidgetDiaTurno.setVerticalHeaderItem(6, __rowItem6);

		QTableWidgetItem __rowItem7 = new QTableWidgetItem();
		__rowItem7.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "13:00"));
		tableWidgetDiaTurno.setVerticalHeaderItem(7, __rowItem7);

		QTableWidgetItem __rowItem8 = new QTableWidgetItem();
		__rowItem8.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "14:00"));
		tableWidgetDiaTurno.setVerticalHeaderItem(8, __rowItem8);

		QTableWidgetItem __rowItem9 = new QTableWidgetItem();
		__rowItem9.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "15:00"));
		tableWidgetDiaTurno.setVerticalHeaderItem(9, __rowItem9);

		QTableWidgetItem __rowItem10 = new QTableWidgetItem();
		__rowItem10.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "16:00"));
		tableWidgetDiaTurno.setVerticalHeaderItem(10, __rowItem10);

		QTableWidgetItem __rowItem11 = new QTableWidgetItem();
		__rowItem11.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "17:00"));
		tableWidgetDiaTurno.setVerticalHeaderItem(11, __rowItem11);

		tableWidgetNocheTurno.clear();
		tableWidgetNocheTurno.setColumnCount(0);
		tableWidgetNocheTurno.setRowCount(12);

		QTableWidgetItem __rowItem12 = new QTableWidgetItem();
		__rowItem12.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "18:00"));
		tableWidgetNocheTurno.setVerticalHeaderItem(0, __rowItem12);

		QTableWidgetItem __rowItem13 = new QTableWidgetItem();
		__rowItem13.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "19:00"));
		tableWidgetNocheTurno.setVerticalHeaderItem(1, __rowItem13);

		QTableWidgetItem __rowItem14 = new QTableWidgetItem();
		__rowItem14.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "20:00"));
		tableWidgetNocheTurno.setVerticalHeaderItem(2, __rowItem14);

		QTableWidgetItem __rowItem15 = new QTableWidgetItem();
		__rowItem15.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "21:00"));
		tableWidgetNocheTurno.setVerticalHeaderItem(3, __rowItem15);

		QTableWidgetItem __rowItem16 = new QTableWidgetItem();
		__rowItem16.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "22:00"));
		tableWidgetNocheTurno.setVerticalHeaderItem(4, __rowItem16);

		QTableWidgetItem __rowItem17 = new QTableWidgetItem();
		__rowItem17.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "23:00"));
		tableWidgetNocheTurno.setVerticalHeaderItem(5, __rowItem17);

		QTableWidgetItem __rowItem18 = new QTableWidgetItem();
		__rowItem18.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "00:00"));
		tableWidgetNocheTurno.setVerticalHeaderItem(6, __rowItem18);

		QTableWidgetItem __rowItem19 = new QTableWidgetItem();
		__rowItem19.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "01:00"));
		tableWidgetNocheTurno.setVerticalHeaderItem(7, __rowItem19);

		QTableWidgetItem __rowItem20 = new QTableWidgetItem();
		__rowItem20.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "02:00"));
		tableWidgetNocheTurno.setVerticalHeaderItem(8, __rowItem20);

		QTableWidgetItem __rowItem21 = new QTableWidgetItem();
		__rowItem21.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "03:00"));
		tableWidgetNocheTurno.setVerticalHeaderItem(9, __rowItem21);

		QTableWidgetItem __rowItem22 = new QTableWidgetItem();
		__rowItem22.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "04:00"));
		tableWidgetNocheTurno.setVerticalHeaderItem(10, __rowItem22);

		QTableWidgetItem __rowItem23 = new QTableWidgetItem();
		__rowItem23.setText(com.trolltech.qt.core.QCoreApplication.translate(
				"Turno", "05:00"));
		tableWidgetNocheTurno.setVerticalHeaderItem(11, __rowItem23);

		for (int x = 0; x < 12; x++) {
			tableWidgetDiaTurno.setRowHeight(x, 23);
			tableWidgetNocheTurno.setRowHeight(x, 23);
		}

	}

	public void agregarColumnasTabla(QTableWidget tableWidgetDiaTurno,
			QTableWidget tableWidgetNocheTurno, TurnoTO[] arrTurnoTO) {

		if (arrTurnoTO != null) {
			tableWidgetDiaTurno.setColumnCount(arrTurnoTO.length);
			tableWidgetNocheTurno.setColumnCount(arrTurnoTO.length);
			for (int x = 0; x < arrTurnoTO.length; x++) {

				QTableWidgetItem __colItem = new QTableWidgetItem();
				__colItem.setText(com.trolltech.qt.core.QCoreApplication
						.translate("Turno", arrTurnoTO[x].getNombre()));
				tableWidgetDiaTurno.setHorizontalHeaderItem(x, __colItem);

				__colItem = new QTableWidgetItem();
				__colItem.setText(com.trolltech.qt.core.QCoreApplication
						.translate("Turno", arrTurnoTO[x].getNombre()));
				tableWidgetNocheTurno.setHorizontalHeaderItem(x, __colItem);
			}
		}

	}

	public void llenarTablaBasico(QTableWidget tableWidgetDiaTurno,
			QTableWidget tableWidgetNocheTurno, QTableWidgetItem[] arrItems,
			int columna) {
		int x = 0;
		int y = 6;
		for (int r = 0; r < 24; r++) {
			if (r >= 6 && r <= 17) {
				tableWidgetDiaTurno.setItem(x, columna, arrItems[r]);
				x++;
			} else {
				tableWidgetNocheTurno.setItem(y, columna, arrItems[r]);
				y++;
				if (y > 11) {
					y = 0;
				}
			}
		}
	}

	public void llenarTabla(QTableWidget tableWidgetDiaTurno,
			QTableWidget tableWidgetNocheTurno, TurnoTO[] arrTurnoTO) {
		if (arrTurnoTO != null) {
			tableWidgetDiaTurno.clear();
			tableWidgetNocheTurno.clear();
			agregarTabla(tableWidgetDiaTurno, tableWidgetNocheTurno);
			tableWidgetDiaTurno.setRowCount(12);
			tableWidgetNocheTurno.setRowCount(12);
			tableWidgetDiaTurno
					.setSelectionMode(com.trolltech.qt.gui.QAbstractItemView.SelectionMode.SingleSelection);
			tableWidgetNocheTurno
					.setSelectionMode(com.trolltech.qt.gui.QAbstractItemView.SelectionMode.SingleSelection);

			agregarColumnasTabla(tableWidgetDiaTurno, tableWidgetNocheTurno,
					arrTurnoTO);

			try {
				turno.comboBoxNombreTurno.disconnect();
				turno.comboBoxNombreTurno.clear();
				for (int x = 0; x < arrTurnoTO.length; x++) {
					turno.comboBoxNombreTurno
							.addItem(arrTurnoTO[x].getNombre());
					QTableWidgetItem[] arrItems = new QTableWidgetItem[24];
					java.sql.Time hora = FechaHoraTO.getHora(arrTurnoTO[x]
							.getHoraInicio());
					String horas = hora.toString();
					String min;
					horas = horas.substring(0, horas.indexOf(':'));
					int fin1 = -1;
					int inicio1 = -1;
					int inicio = Integer.parseInt(horas);

					hora = FechaHoraTO.getHora(arrTurnoTO[x].getDuracion());
					horas = hora.toString();
					min = horas.substring(3, 5);
					horas = horas.substring(0, horas.indexOf(':'));

					int suma = 0;

					if (Integer.parseInt(min) >= 30)
						suma++;

					int fin = inicio + Integer.parseInt(horas) - 1 + suma;
					if (fin > 23) {
						inicio1 = 0;
						fin1 = (fin - inicio) - (24 - inicio);
						fin = 23;
					}

					int rojo = 25 * (1 + ((int) (Math.random() * 10)));
					int verde = 130 + ((int) (Math.random() * 10) * (int) (Math
							.random() * 12));
					int azul = 130 + (125 - (int) (Math.random() * 125));

					for (int y = 0; y < 24; y++) {
						QColor color = new QColor();
						if (y >= inicio && y <= fin) {
							color.setRgb(rojo, verde, azul);
						} else if (y >= inicio1 && y <= fin1) {
							color.setRgb(rojo, verde, azul);
						} else {
							color.setRgb(255, 255, 255);
						}

						arrItems[y] = new QTableWidgetItem();
						
						arrItems[y].setBackground(new QBrush(color));
					}
					llenarTablaBasico(tableWidgetDiaTurno,
							tableWidgetNocheTurno, arrItems, x);
				}
				turno.comboBoxNombreTurno.currentIndexChanged.connect(this,
						"seleccionCombo(int)");
				turno.comboBoxNombreTurno.editTextChanged.connect(this,
						"cambioComboNombre(String)");
				turno.comboBoxNombreTurno.setCurrentIndex(-1);

			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	public void seleccionCombo(int seleccion) {
		if (seleccion != -1) {
			cambioComboNombre(turno.comboBoxNombreTurno.lineEdit().text());
			turno.tableWidgetNocheTurno.setCurrentCell(0, seleccion);
			turno.tableWidgetNocheTurno.clicked.emit(null);
		}
	}

	public void seleccionBusqueda(int seleccion) {
		turno.comboBoxBusquedaTurno.disconnect();
		turno.lineEditValor1Turno.disconnect();
		turno.pushButtonBuscaTurno.disconnect();
		turno.lineEditValor1Turno.setInputMask("");
		turno.lineEditValor1Turno.clear();
		turno.lineEditValor1Turno.setValidator(null);
		turno.labelValor1Turno.setVisible(false);
		turno.lineEditValor1Turno.setEnabled(false);
		turno.lineEditValor1Turno.setVisible(false);

		turno.pushButtonBuscaTurno.setEnabled(false);
		turno.pushButtonLimpiarTurno.setEnabled(false);
		turno.pushButtonLimpiarTurno.setVisible(true);

		turno.lineEditValor2Turno.disconnect();
		turno.lineEditValor2Turno.setInputMask("");
		turno.lineEditValor2Turno.clear();
		turno.lineEditValor2Turno.setValidator(null);
		turno.labelValor2Turno.setVisible(false);
		turno.lineEditValor2Turno.setEnabled(false);
		turno.lineEditValor2Turno.setVisible(false);
		turno.comboBoxBusquedaTurno.currentIndexChanged.connect(this,
				"seleccionBusqueda(int)");

		switch (seleccion) {
		case 0: {
			turno.labelValor1Turno.setVisible(true);
			turno.labelValor1Turno.setText("Nombre:");
			turno.lineEditValor1Turno.setVisible(true);
			turno.lineEditValor1Turno.setEnabled(true);
			turno.lineEditValor1Turno.setValidator(null);
			turno.lineEditValor1Turno.textChanged.connect(this,
					"cambioNombre(String)");
			turno.pushButtonBuscaTurno.clicked.connect(this,
					"botonBuscarNombre()");
			turno.lineEditValor1Turno.returnPressed.connect(this,
					"botonBuscarNombre()");
			turno.lineEditValor1Turno.setFocus();
			break;
		}
		case 1: {
			turno.labelValor1Turno.setVisible(true);
			turno.labelValor1Turno.setText("De:");
			turno.lineEditValor1Turno.setVisible(true);
			turno.lineEditValor1Turno.setEnabled(true);
			turno.lineEditValor1Turno.setValidator(new QIntValidator(
					turno.lineEditValor1Turno));
			turno.lineEditValor1Turno.setInputMask("9;0");
			turno.lineEditValor1Turno.textChanged.connect(this,
					"cambioDiasSemana(String)");

			turno.labelValor2Turno.setVisible(true);
			turno.labelValor2Turno.setText("A:");
			turno.lineEditValor2Turno.setEnabled(false);
			turno.lineEditValor2Turno.setVisible(true);
			turno.lineEditValor2Turno.setValidator(new QIntValidator(
					turno.lineEditValor2Turno));
			turno.lineEditValor2Turno.setInputMask("9;0");
			turno.lineEditValor2Turno.textChanged.connect(this,
					"cambioDiasSemana(String)");

			turno.pushButtonBuscaTurno.clicked.connect(this,
					"botonBuscarRangoDia()");
			turno.lineEditValor1Turno.setFocus();
			break;
		}
		case 2: {
			turno.labelValor1Turno.setVisible(true);
			turno.labelValor1Turno.setText("De las:");
			turno.lineEditValor1Turno.setVisible(true);
			turno.lineEditValor1Turno.setEnabled(true);
			turno.lineEditValor1Turno.setInputMask("00:00:00;-");
			turno.lineEditValor1Turno.textChanged.connect(this,
					"cambioRangoTiempo(String)");

			turno.labelValor2Turno.setVisible(true);
			turno.labelValor2Turno.setText("A las:");
			turno.lineEditValor2Turno.setEnabled(false);
			turno.lineEditValor2Turno.setVisible(true);
			turno.lineEditValor2Turno.setInputMask("00:00:00;-");
			turno.lineEditValor2Turno.textChanged.connect(this,
					"cambioRangoTiempo(String)");
			turno.pushButtonBuscaTurno.clicked.connect(this,
					"botonBuscarRangoInicio()");
			turno.lineEditValor1Turno.setFocus();
			break;
		}
		case 3: {
			turno.labelValor1Turno.setVisible(true);
			turno.labelValor1Turno.setText("De:");
			turno.lineEditValor1Turno.setVisible(true);

			turno.lineEditValor1Turno.setEnabled(true);
			turno.lineEditValor1Turno.setInputMask("00:00:00;-");
			turno.lineEditValor1Turno.textChanged.connect(this,
					"cambioRangoTiempo(String)");

			turno.labelValor2Turno.setVisible(true);
			turno.labelValor2Turno.setText("A:");
			turno.lineEditValor2Turno.setEnabled(false);
			turno.lineEditValor2Turno.setVisible(true);
			turno.lineEditValor2Turno.setInputMask("00:00:00;-");
			turno.lineEditValor2Turno.textChanged.connect(this,
					"cambioRangoTiempo(String)");
			turno.pushButtonBuscaTurno.clicked.connect(this,
					"botonBuscarRangoDuracion()");
			turno.lineEditValor1Turno.setFocus();
			break;
		}
		case 4: {

			turno.pushButtonBuscaTurno.setEnabled(true);
			turno.pushButtonLimpiarTurno.setVisible(false);
			turno.pushButtonBuscaTurno.clicked.connect(this,
					"botonBuscarTodos()");
			break;
		}

		}
	}

	public void botonBuscarNombre() {
		TurnoTO[] arrResTO = null;

		arrResTO = (TurnoTO[]) ConexionConNegocios.invocaServicio(
				"encontrarTurnoPorNombre", turno.lineEditValor1Turno.text(),
				TurnoTO[].class);
		if (arrResTO != null) {
			if (arrResTO[0].getTipoError() > 0) {
				Utilerias.mostrarMensajeError(this, arrResTO[0]);
			} else {
				arrTurnoTO = null;
				arrTurnoTO = arrResTO;
				limpiarTurno(turno);
				preparaVentana(null);
			}
		}
	}

	public void botonBuscarRangoInicio() {
		TurnoTO[] arrResTO = null;
		TurnoTO[] rangoTO = new TurnoTO[2];
		TurnoTO auxTO = new TurnoTO();
		auxTO.setHoraInicio(FechaHoraTO.getHora(turno.lineEditValor1Turno
				.text()));
		rangoTO[0] = auxTO;
		auxTO = new TurnoTO();
		auxTO.setHoraInicio(FechaHoraTO.getHora(turno.lineEditValor2Turno
				.text()));
		rangoTO[1] = auxTO;

		arrResTO = (TurnoTO[]) ConexionConNegocios.invocaServicio(
				"encontrarTurnoPorRangoInicio", rangoTO, TurnoTO[].class);
		if (arrResTO != null) {
			if (arrResTO[0].getTipoError() > 0) {
				Utilerias.mostrarMensajeError(this, arrResTO[0]);
			} else {
				arrTurnoTO = null;
				arrTurnoTO = arrResTO;
				limpiarTurno(turno);
				preparaVentana(null);
			}
		}
	}

	public void botonBuscarRangoDia() {
		try {
			TurnoTO[] arrResTO = null;
			TurnoTO[] rangoTO = new TurnoTO[2];
			TurnoTO auxTO = new TurnoTO();
			auxTO.setDiasSemana(Short.parseShort(turno.lineEditValor1Turno
					.text()));
			rangoTO[0] = auxTO;
			auxTO = new TurnoTO();
			auxTO.setDiasSemana(Short.parseShort(turno.lineEditValor2Turno
					.text()));
			rangoTO[1] = auxTO;

			arrResTO = (TurnoTO[]) ConexionConNegocios.invocaServicio(
					"encontrarTurnoPorRangoDia", rangoTO, TurnoTO[].class);
			if (arrResTO != null) {
				if (arrResTO[0].getTipoError() > 0) {
					Utilerias.mostrarMensajeError(this, arrResTO[0]);
				} else {
					arrTurnoTO = null;
					arrTurnoTO = arrResTO;
					limpiarTurno(turno);
					preparaVentana(null);
				}
			}
		} catch (Exception e) {

		}
	}

	public void botonBuscarRangoDuracion() {
		TurnoTO[] arrResTO = null;
		TurnoTO[] rangoTO = new TurnoTO[2];
		TurnoTO auxTO = new TurnoTO();
		auxTO
				.setDuracion(FechaHoraTO.getHora(turno.lineEditValor1Turno
						.text()));
		rangoTO[0] = auxTO;
		auxTO = new TurnoTO();
		auxTO
				.setDuracion(FechaHoraTO.getHora(turno.lineEditValor2Turno
						.text()));
		rangoTO[1] = auxTO;

		arrResTO = (TurnoTO[]) ConexionConNegocios.invocaServicio(
				"encontrarTurnoPorRangoDuracion", rangoTO, TurnoTO[].class);
		if (arrResTO != null) {
			if (arrResTO[0].getTipoError() > 0) {
				Utilerias.mostrarMensajeError(this, arrResTO[0]);
			} else {
				arrTurnoTO = null;
				arrTurnoTO = arrResTO;
				limpiarTurno(turno);
				preparaVentana(null);
			}
		}
	}

	public void botonBuscarTodos() {
		arrTurnoTO = (TurnoTO[]) ConexionConNegocios.invocaServicio(
				"buscarTurnos", TurnoTO[].class);
		limpiarTurno(turno);
		preparaVentana(null);
	}

	public void cambioDiasSemana(String cadena) {
		try {
			String cadena1 = turno.lineEditValor1Turno.text();
			String cadena2 = turno.lineEditValor2Turno.text();

			if (cadena1 != null) {
				if (Integer.parseInt(cadena1) > 7) {
					turno.lineEditValor1Turno.setText("7");
				}
				turno.lineEditValor1Turno.setCursorPosition(0);
				turno.lineEditValor2Turno.setEnabled(true);
			}
			if (cadena2 != null) {
				if (Integer.parseInt(cadena2) > 7) {
					turno.lineEditValor2Turno.setText("7");
				}
				turno.lineEditValor2Turno.setCursorPosition(0);
				turno.pushButtonBuscaTurno.setEnabled(true);
				turno.pushButtonLimpiarTurno.setEnabled(true);
			}
		} catch (Exception e) {

			turno.pushButtonBuscaTurno.setEnabled(false);
			turno.pushButtonLimpiarTurno.setEnabled(false);
		}
	}

	public void validaTiempo(QLineEdit campo) {
		try {
			String cadena1 = campo.text();
			StringBuffer horaBuf = new StringBuffer();
			if (cadena1.length() >= 4) {
				String hora[] = cadena1.split(":");

				for (int x = 0; x < hora.length; x++) {
					if (x == 0) {
						if (Integer.parseInt(hora[x]) > 23)
							horaBuf.append("23");
						else
							horaBuf.append(hora[x]);
					} else {
						horaBuf.append(":");
						if (Integer.parseInt(hora[x]) > 59)
							horaBuf.append("59");
						else
							horaBuf.append(hora[x]);
					}
				}

				if (horaBuf.length() > 1) {
					if (horaBuf.length() == 2) {
						horaBuf.append(":");
					} else if (horaBuf.length() == 5) {
						horaBuf.append(":");
					}
					campo.setText(horaBuf.toString());
					campo.setCursorPosition(horaBuf.length());
				}
			}
		} catch (Exception e) {

		}
	}

	public void cambioRangoTiempo(String cadena) {
		try {
			if (turno.lineEditValor1Turno.text().length() >= 4) {
				validaTiempo(turno.lineEditValor1Turno);
				if (turno.lineEditValor1Turno.text().length() >= 8)
					turno.lineEditValor2Turno.setEnabled(true);
				else
					turno.lineEditValor2Turno.setEnabled(false);

			}
			if (turno.lineEditValor2Turno.text().length() >= 4) {
				validaTiempo(turno.lineEditValor2Turno);

				if (turno.lineEditValor2Turno.text().length() >= 8
						&& turno.lineEditValor1Turno.text().length() >= 8) {
					turno.pushButtonBuscaTurno.setEnabled(true);
					turno.pushButtonLimpiarTurno.setEnabled(true);
				} else {
					turno.pushButtonBuscaTurno.setEnabled(false);
					turno.pushButtonLimpiarTurno.setEnabled(false);
				}

			}
		} catch (Exception e) {
			turno.lineEditValor2Turno.setEnabled(false);
			turno.pushButtonBuscaTurno.setEnabled(false);
			turno.pushButtonLimpiarTurno.setEnabled(false);
		}
	}

	public short cambioTexto(String cadena) {
		short res = (short) -1;
		if (cadena.length() < 80) {
			if (cadena != null && cadena.replace(" ", "") != ""
					&& cadena.replace(" ", "").length() > 0) {
				res = 0;

			} else {
				res = 1;
			}
		} else {
			res = 2;
		}
		return res;
	}

	public void cambioNombre(String cadena) {
		short res = cambioTexto(cadena);
		if (res == 0) {
			turno.pushButtonBuscaTurno.setEnabled(true);
			turno.pushButtonLimpiarTurno.setEnabled(true);
		} else if (res == 1) {
			turno.pushButtonBuscaTurno.setEnabled(false);
			turno.pushButtonLimpiarTurno.setEnabled(false);
		} else if (res == 2) {
			turno.lineEditValor1Turno.setText(cadena.substring(0, 79));
		}

	}

	public void cambioComboNombre(String cadena) {
		short res = cambioTexto(cadena);
		if (res == 0) {
			turno.timeEditHoraInicial.setEnabled(true);
			turno.timeEditDuracion.setEnabled(true);
			turno.timeEditTiempoDescanso.setEnabled(true);
			turno.spinBox.setEnabled(true);
			if (turno.timeEditDuracion.time().toString().compareTo("00:00:00") != 0)
				turno.pushButtonvalor3Turno.setEnabled(true);

		} else if (res == 1) {
			turno.timeEditHoraInicial.setEnabled(false);
			turno.timeEditDuracion.setEnabled(false);
			turno.timeEditTiempoDescanso.setEnabled(false);
			turno.spinBox.setEnabled(false);
			turno.pushButtonvalor3Turno.setEnabled(false);
		} else if (res == 2) {
			turno.comboBoxNombreTurno.setEditText(cadena.substring(0, 79));
		}

	}

	public void cambioDuracion(QTime tiempo) {
		String cadena = tiempo.toString();
		if (cadena.compareTo("00:00:00") == 0) {
			turno.pushButtonvalor3Turno.setEnabled(false);
		} else
			turno.pushButtonvalor3Turno.setEnabled(true);
	}

	public void botonLimpiar() {
		turno.comboBoxBusquedaTurno.setCurrentIndex(-1);
	}

	public void limpiarTurno(Ui_Turno turno) {
		turno.comboBoxBusquedaTurno.setCurrentIndex(-1);
		turno.comboBoxNombreTurno.setCurrentIndex(-1);
		turno.spinBox.setValue(1);
		turno.lineEditValor1Turno.setText("");
		turno.lineEditValor2Turno.setText("");
		turno.tableWidgetDiaTurno.clearContents();
		turno.tableWidgetNocheTurno.clearContents();
		QTime tiempo = new QTime(00, 00);
		turno.timeEditDuracion.setTime(tiempo);
		turno.timeEditHoraInicial.setTime(tiempo);
		turno.timeEditTiempoDescanso.setTime(tiempo);
		agregarTabla(turno.tableWidgetDiaTurno, turno.tableWidgetNocheTurno);

	}

	public void bloqueaComponentes(Ui_Turno turno) {
		turno.pushButtonBuscaTurno.setEnabled(false);
		turno.pushButtonLimpiarTurno.setEnabled(false);
		turno.pushButtonvalor3Turno.setEnabled(false);

		turno.lineEditValor1Turno.setEnabled(false);
		turno.lineEditValor2Turno.setEnabled(false);

		turno.spinBox.setEnabled(false);
		turno.timeEditDuracion.setEnabled(false);
		turno.timeEditHoraInicial.setEnabled(false);
		turno.timeEditTiempoDescanso.setEnabled(false);
	}

}
